import type { DataExportFieldAO } from './DataExportFieldAO'

/**
 * 数据导出 参数类
 */
export interface DataExportAO<T> {

  /**
   * 大数据导出
   */
  bigDataExport?: boolean

  /**
   * 文件模块
   */
  fileModule?: string | null

  /**
   * 文件名
   */
  fileName?: string | null

  /**
   * 数据导出字段配置
   */
  dataExportFieldConf: Array<DataExportFieldAO> | []

  /**
   * 数据
   */
  data: Array<T> | []

}

export function toDataExportAO<T>(dataExportFieldConf: Array<DataExportFieldAO>, data: T | Array<T>, fileName?: string, fileModule?: string, bigDataExport?: boolean): DataExportAO<T> {
  return {
    bigDataExport: typeof bigDataExport !== 'undefined' && bigDataExport !== null ? bigDataExport : false,
    fileModule: typeof fileModule !== 'undefined' && fileModule !== null ? fileModule : 'dataExport',
    fileName: typeof fileName !== 'undefined' && fileName !== null ? fileName : '数据导出.xlsx',
    dataExportFieldConf: dataExportFieldConf,
    data: Array.isArray(data) ? [ ...data ] : [ data ],
  } as DataExportAO<T>
}
